在網路開發中,最常見的就是以HTTP協定與其他端點溝通,但各自使用不同的內容及結構可能會造成困擾。
比如不同的服務都需要閱讀各自的文件並適應不同的格式,於是為了解決這個問題,出現了諸如SOAP, REST, gRPC, graphQL等用來規範彼此如何規範的技術。
雖然聽起來有點複雜,但大致來說,他們想解決的事情就是:
如何訪問 Web 服務
今天會對不同的架構各自有些介紹,那就開始吧~
是一種完全依賴XML進行傳輸且經過明確規範的協定,當初建立的目的是包括:
正因為他是明確的協定,所以如果不遵守規則就無法使用他,另外,相較於REST,因為解析規則、標準的必要開銷,以及內部包含的大量訊息,所以他普遍被認為成本更高。
-- 維基百科
在使用的時候通常會搭配網路服務描述語言(Web Service Description Language, WSDL),告訴我們如何解析一個SOAP server,而這樣的過程通常可以透過第三方套件來自動處理。
所以使用SOAP的好處就是,因為SOAP是經過明確定義的結構,因此可以自動化處理不論XML的產出或是解析,讓我們使用其他Web Server的元件就像是在使用function一樣。
相對於SOAP,REST更像是一種準則或建議,甚至是風格,並不強調完全遵守。
REST的全名為表現層狀態轉換,只要遵守一下規則的就可以稱他為RESTful服務:
所以RESTful API就是遵守以上架構風格的API,特別針對統一介面來說明
比如:
GET https://www.example.com/users
在統一介面下,可以清楚的知道這是取得所有users的資料的一條API。
RPC指的是remote procedure call,原本在1980左右產生,當時就是為了解決電腦間的溝通,而在現在,由google在這個概念之上發展了gRPC,使用Protocol Buffers來描述資料如何交換,提供了另一種有別於RESTful的溝通方式。
那gRPC是什麼呢?用中文來說就是「遠端程式呼叫系統」
意思就是呼叫API時就像呼叫自己的函式一樣。
一種讓使用者可以通過定義好的語法取得指定的資料及修改指定的資料。
通常會拿它來和RESTful api做比較,相較於後者:
某種程度上你可以說他跟SQL還真的蠻像的XD
他大致的流程如下:
一次性了解不同的訪問web service的方式確實有點吃力,很多部分都只寫到最淺顯的部分...
剩下的部分就交給未來的自己了,現在至少可以在別人提到這個字的時候點頭然後不會睜眼瞎了XDD
此文章同步發表於部落格,歡迎來逛逛~
REST vs. SOAP
SOAP vs REST. What's the Difference?
Why SOAP
表現層狀態轉換
[gRPC] gRPC Getting Started
https://ithelp.ithome.com.tw/articles/10200678
graphQL